#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <omp.h>
#include "util.h"

#define NUM_BYTES 1336054
#define NUM_TH 4

int main(int argc, char **argv){

	double tempo, inicial = omp_get_wtime();

	int seek, numPalavras = 0, numFrases = 0, rank;
	int i, j;
	char **texto, *aux;
	char c;
	FILE *arq;
	int lixo;

	arq = fopen("shakespe.txt", "r");
	
    	seek = NUM_BYTES;

	aux = (char *)malloc(TAM_FRASE*sizeof(char));
	texto = (char **)malloc(NUM_TH*sizeof(char *));

	for(i = 0; i < NUM_TH; i++){
		texto[i] = (char*)malloc((seek + TAM_FRASE + 1)*sizeof(char));

		fread(texto[i], sizeof(char), seek, arq);
			
		j = 0;
		c = fgetc(arq);
		if(c != -1){
			while(c != '\n' && c != '!' && c != '?' && c != ';' && c != ':' && c != '\r' )
			{
				aux[j] = c;
				c = fgetc(arq);
				j++;
		
			}
				aux[j] = '\0';
				strcat(texto[i], aux);
				seek = NUM_BYTES - j;
		}
		
	}
	fclose(arq);

	for(i = 0; i < NUM_TH; i++){
		numPalavras += separaPalavra(texto[i],&lixo);
        	numFrases += separaFrase(texto[i],&lixo);	
	}

	tempo = omp_get_wtime() - inicial;

	printf("Quantidade de palindromos de palavras: %d\n", numPalavras);
   	printf("Quantidade de palindromos de frase: %d\n", numFrases);
	printf("Tempo de execução: %.2lf seg\n", tempo);

return 0;
}
